package com.sacfa.commons.bo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import org.apache.log4j.Logger;

import com.sacfa.commons.beans.Usuario;
import com.sacfa.commons.connection.PoolConexion;
import com.sacfa.commons.sql.UsuarioSQL;
import com.sacfa.commons.utilities.SACFAExceptions;

/**
 * @author Leizar Zar
 * @version 1.0
 * @created 11-ago-2013
 */
public class UsuarioBo {
	private static Logger log = Logger.getLogger(UsuarioBo.class);
	
	public void registrar(Usuario usuario){
		PreparedStatement stm = null;
		Connection conex = PoolConexion.getInstance().getConexion();
		
		try {
			PoolConexion.getInstance().beginTransaction(conex);
			
			stm = conex.prepareStatement(UsuarioSQL.REGISTRAR_USUARIO);
			stm.setString(1, usuario.getUsuario());
			stm.setString(2, usuario.getPassword());
			stm.executeUpdate();
			
			JOptionPane.showMessageDialog(null, "El usuario ha sido registrado satisfactoriamente", 
					"Registro satisfactorio", JOptionPane.INFORMATION_MESSAGE);
			PoolConexion.getInstance().commit(conex);
			PoolConexion.getInstance().endTransaction(conex);
		} catch(SQLException ex) {
			log.info("Error SQL", ex);
			throw new SACFAExceptions("Error SQL", ex);
		} finally {
			PoolConexion.getInstance().endConection(conex);
		}
	}

	public void consultar(Usuario usuario){
		PreparedStatement stm = null;
		ResultSet rs = null;
		Connection conex = PoolConexion.getInstance().getConexion();
		
		try {
			stm = conex.prepareStatement(UsuarioSQL.LEER_USUARIO);
			stm.setString(1, usuario.getUsuario());
			stm.setString(2, usuario.getPassword());
			rs = stm.executeQuery();
			
			if(rs.next()) {
				Usuario.setUsuarioActivo(usuario.getUsuario());
				Usuario.setTipo(rs.getString(4));
			} else {
				JOptionPane.showMessageDialog(null, "No existe un usuario con esos datos", 
						"Error", JOptionPane.ERROR_MESSAGE);
			}
		} catch(SQLException ex) {
			log.info("Error SQL", ex);
			throw new SACFAExceptions("Error SQL", ex);
		} finally {
			PoolConexion.getInstance().endConection(conex);
		}
	}
}
